01-CloudWatch-대시보드구축
CloudWatch 대시보드 구축
목표
Week 3.5에서 구축한 고가용성 웹 서비스의 모든 구성요소를 통합 모니터링할 수 있는 CloudWatch 대시보드를 만들고, 핵심 알람을 설정해봅시다.
왜 모니터링이 필요한가?
현재 상황 (모니터링 없음)
문제 발생 → 사용자 신고 → 원인 조사 → 해결
- 사후 대응 방식
- 긴 장애 시간
- 원인 파악 어려움
모니터링 구축 후
문제 예측 → 자동 알림 → 즉시 대응 → 빠른 해결
- 사전 예방 방식
- 최소 장애 시간
- 명확한 원인 파악
모니터링할 주요 지표
ALB (Application Load Balancer)
- RequestCount: 분당 요청 수
- TargetResponseTime: 평균 응답 시간
- HealthyHostCount: 정상 서버 수
- HTTPCode_Target_4XX/5XX: 에러율
EC2 (Web/WAS 서버)
- CPUUtilization: CPU 사용률
- NetworkIn/Out: 네트워크 트래픽
- StatusCheckFailed: 인스턴스 상태
RDS (데이터베이스)
- CPUUtilization: DB CPU 사용률
- DatabaseConnections: 연결 수
- ReadLatency/WriteLatency: 읽기/쓰기 지연시간
1단계: CloudWatch 대시보드 생성
대시보드 만들기
- AWS 콘솔 → CloudWatch 검색 및 클릭
- 왼쪽 메뉴에서 대시보드 클릭
- 대시보드 생성 버튼 클릭
- 대시보드 이름:
WebApp-Production-Dashboard - 생성 클릭
대시보드 레이아웃 계획
[ ALB 요청 수 ] [ ALB 응답시간 ] [ 정상 서버 수 ]
[ Web CPU ] [ WAS CPU ] [ RDS CPU ]
[ DB 연결 수 ] [ DB 지연시간 ] [ 에러율 ]
2단계: ALB 모니터링 위젯 추가
위젯 1: ALB 요청 수
- 위젯 추가 → 선 그래프 선택
- 메트릭 추가:
- 네임스페이스: AWS/ApplicationELB
- 메트릭 이름: RequestCount
- LoadBalancer: webapp-alb 선택
- 통계: 합계
- 기간: 5분
- 위젯 제목:
ALB 요청 수 (5분간) - 위젯 생성
위젯 2: ALB 응답 시간
- 위젯 추가 → 선 그래프 선택
- 메트릭: ApplicationELB → TargetResponseTime
- LoadBalancer: webapp-alb 선택
- 통계: 평균
- 위젯 제목:
평균 응답 시간 - Y축 단위: 밀리초
위젯 3: 정상 서버 수
- 위젯 추가 → 숫자 선택
- 메트릭: ApplicationELB → HealthyHostCount
- LoadBalancer: webapp-alb 선택
- 통계: 평균
- 위젯 제목:
정상 서버 수
3단계: EC2 모니터링 위젯 추가
위젯 4: Web 서버 CPU
- 위젯 추가 → 선 그래프 선택
- 메트릭: EC2 → 인스턴스별 → CPUUtilization
- Auto Scaling으로 생성된 Web 서버들 모두 선택
- 통계: 평균
- 위젯 제목:
Web 서버 CPU 사용률
위젯 5: WAS 서버 모니터링
- 위젯 추가 → 선 그래프 선택
- 메트릭: EC2 → CPUUtilization
- WAS 서버 인스턴스 선택
- 위젯 제목:
WAS 서버 CPU 사용률
4단계: RDS 모니터링 위젯 추가
위젯 6: 데이터베이스 연결 수
- 위젯 추가 → 선 그래프 선택
- 메트릭: RDS → 데이터베이스별 → DatabaseConnections
- MySQL 인스턴스 선택
- 위젯 제목:
DB 연결 수
위젯 7: 데이터베이스 지연시간
- 위젯 추가 → 선 그래프 선택
- 메트릭: RDS → ReadLatency, WriteLatency 모두 추가
- 위젯 제목:
DB 응답 지연시간
5단계: 핵심 알람 설정
알람 1: Web 서버 고CPU 사용률
- CloudWatch → 알람 → 알람 생성
- 메트릭 선택: EC2 → CPUUtilization (Web 서버들)
- 조건:
- 임계값: 80%
- 기간: 5분간 연속
- 알람 이름:
WebServer-HighCPU - 알람 설명:
Web 서버 CPU가 80%를 초과함
알람 2: 모든 서버 다운
- 메트릭: ApplicationELB → HealthyHostCount
- 조건: 1보다 작음 (정상 서버 0대)
- 알람 이름:
CRITICAL-AllServersDown - 우선순위: 높음
알람 3: 높은 DB 연결 수
- 메트릭: RDS → DatabaseConnections
- 조건: 20보다 큼
- 알람 이름:
RDS-HighConnections
알람 4: 높은 응답 시간
- 메트릭: ApplicationELB → TargetResponseTime
- 조건: 1초(1000ms)보다 큼
- 알람 이름:
ALB-SlowResponse
6단계: 대시보드 최적화
시간 범위 설정
- 대시보드 우상단에서 시간 범위 설정
- 지난 1시간 또는 지난 3시간 선택
- 자동 새로고침: 1분 또는 5분 설정
위젯 배치 조정
권장 배치:
1행: [ ALB 요청수 ] [ 응답시간 ] [ 정상서버수 ]
2행: [ Web CPU ] [ WAS CPU ] [ RDS CPU ]
3행: [ DB 연결수 ] [ DB 지연 ] [ 에러율 ]
컬러 테마 적용
- 정상: 녹색
- 주의: 노란색
- 위험: 빨간색
7단계: 모니터링 동작 확인
부하 테스트
Web 서버에 부하 생성:
# Web 서버에 SSH 접속
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP
# CPU 부하 생성 (5분간)
stress --cpu 2 --timeout 300s
대시보드에서 확인
- CPU 사용률이 증가하는지 확인
- ALB 응답시간이 증가하는지 확인
- 5분 후 알람이 발생하는지 확인
웹사이트 부하 테스트
# 동시 요청으로 부하 생성
for i in {1..20}; do
curl -s http://ALB-DNS-Name/webapp/ > /dev/null &
done
wait
대시보드에서 확인:
- ALB 요청 수 증가
- DB 연결 수 증가
- 응답 시간 변화
완료 체크리스트
대시보드 구성
알람 설정
동작 확인
문제 해결
메트릭이 표시되지 않을 때
확인사항:
- 시간 범위: 최근 1시간으로 설정
- 리소스 선택: 올바른 인스턴스/로드밸런서 선택
- 권한 확인: CloudWatch 읽기 권한 확인
알람이 발생하지 않을 때
확인사항:
- 메트릭 값: 실제로 임계값을 초과했는지 확인
- 평가 기간: 5분간 지속적으로 초과해야 함
- 데이터 포인트: "5분 중 3분" 등 조건 확인
모니터링 운영 가이드
일일 확인사항
매일 아침 체크:
- 대시보드에서 전날 밤 이상사항 확인
- 발생한 알람 검토
- 성능 트렌드 분석
주간 리뷰
매주 검토사항:
- 평균 응답시간 트렌드
- CPU 사용률 패턴
- DB 연결 수 변화
- 알람 임계값 적정성
CloudWatch 대시보드 구축 완료
축하합니다! 이제 웹 서비스의 모든 상태를 한 눈에 볼 수 있고, 문제가 발생하기 전에 미리 알 수 있는 체계가 완성되었습니다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/02-비용분석및최적화/01-Cost-Explorer-분석에서 비용 구조를 분석하고 최적화해보겠습니다.
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/README, AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/02-비용분석및최적화/01-Cost-Explorer-분석